{ "cells": [ { "cell_type": "markdown", "source": [ "# Making Weapons\n", "\n", "## Try me\n", "[![Open In Colab](../../_static/colabs_badge.png)](https://colab.research.google.com/github/ffraile/operations-research-notebooks/blob/main/docs/source/CLP/solved/Making%20weapons%20(solved%20Graphic).ipynb)[![Binder](../../_static/binder_badge.png)](https://mybinder.org/v2/gh/ffraile/operations-research-notebooks/main?labpath=docs%2Fsource%2FCLP%2Fsolved%2FMaking%20weapons%20(solved%20Graphic).ipynb)\n", "\n", "## Problem Definition\n", "Din Djarin is a retired bounty hunter that now runs a small factory specialised in making classic weapons in a colony recently re-established in Mandalore. The factory manufactures two different types of weapons, swords and spears. Din uses special alloys, mixtures of metals and rare materials, which have made a name for the endurance of his weapons across the colony. The table below shows the weight in pounds of each material needed to make each type of weapon:\n", "\n", "| Metal | spear | sword |\n", "|----------|-------|-------|\n", "| Beskar | 1 | 0.5 |\n", "| Tungsten | 1 | 1 |\n", "| Titanium | 3 | 1 |\n", "\n", "And the table below shows the total amount of each metal available, also in pounds: \n", "\n", "| Metal | Amount |\n", "|----------|--------|\n", "| Beskar | 125 |\n", "| Tungsten | 225 |\n", "| Titanium | 300 |\n", "\n", "The price of a spade is 40 credits and the price of a sword is 5 credits. Din has already sold 100 swords, so he needs to manufacture at least that many. \n", "\n", "**Find the optimal number of spades and swords that maximise revenues**" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "## Model" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "The objective is to maximise the revenues obtained with the sales of both types of weapons. \n", "The objective function can be modeled as:\n", "\n", "$\\max z = 40x_{1} + 5x_{2}$\n", "\n", "where z represents the objective variable (profits) and the decision variables are:\n", "\n", "\n", "- $x_{1}$: units of spears\n", "\n", "- $x_{2}$: units of swords\n", "\n", "Let us for now consider that they are real and non-negative. \n", "\n", "The objective function is subject to the following constraints:\n", "\n", "Metal availability constraints: \n", "\n", "$x_{1} + 0.5x_{2} \\leq 125$\n", "\n", "$x_{1} + x_{2} \\leq 225$\n", "\n", "$3x_{1} + x_{2} \\leq 300$\n", "\n", "And the demand on swords:\n", "\n", "$x_{2} \\geq 100$\n", "\n" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 3, "outputs": [ { "data": { "text/plain": "" }, "metadata": {}, "output_type": "execute_result", "execution_count": 3 }, { "data": { "text/plain": "
", "image/png": "iVBORw0KGgoAAAANSUhEUgAAAg4AAAEMCAYAAACsmz6vAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAABoyElEQVR4nO3deViUVfsH8O+ZGXZkB0VWgUEEBEQEQdw1RVQU1KzcMtNcstSysvxpVm/78uZWLpWpubG4mwsuiQsoKogIAsoqCKjsO3N+f4C9ZCCLswH357q4mDnzLPczCtxzzrmfwzjnIIQQQghpCYGiAyCEEEJI+0GJAyGEEEJajBIHQgghhLQYJQ6EEEIIaTFKHAghhBDSYpQ4EEIIIaTFZJ44MMYsGGNnGGPxjLFbjLG36ttXM8ayGGM36r/GNNjnA8ZYMmMskTE2StYxEkIIIaRlmKzv48AYMwVgyjm/xhjrAiAawAQAUwCUcM6/eWp7RwC7AHgC6A7gFAB7znmtTAMlhBBCSLNk3uPAOc/mnF+rf1wM4DYAs2fsEgBgN+e8knN+D0Ay6pIIQgghhCiYXOc4MMasAfQBEFnftIgxFssY+4Uxpl/fZgYgo8FumXh2okEIIYQQORHJ60SMMW0AIQDe5pwXMcY2AvgEAK///i2A2a043lwAcwFAqNGlr1C3K0x11WGkrSb94FtJUsvxOKcUAKDfTQsCIVNwRMqh5FE+SgsLYGJlAyagebmEKFp0dHQ+59z4OY9hIhKJtgBwBk247wgkAOJqamrm9O3bN7exDeSSODDGVFCXNOzknIcCAOf8QYPXNwM4XP80C4BFg93N69v+gXO+CcAmAHDv25f3e/tnHL/1AF69TfHlJBdoq8ktJ2pUfmYxQr++Br2umpi4zB0qakKFxqMMspMS8cdHy+C3aBkcBw5VdDiEdHqMsbTnPYZIJNrSrVu3XsbGxo8FAgEtftTOSSQSlpeX55iTk7MFwPjGtpFHVQUDsBXAbc75dw3aTRtsNhFAXP3jgwCmMsbUGGM9AIgBRD3rHALG8NO0vnjfzwHH4rIxYf0FJOcWS/dCWsnIvAtemOOE/IxinNh6CxIJ/Tx1sxVD28AQSZEXFR0KIUR6nI2NjYsoaegYBAIBNzY2LkRdD1Lj28ghjgEApgMY9lTp5VeMsZuMsVgAQwEsAQDO+S0AewHEA/gTwMKWVFQwxvDGYFvseM0Lj0urELDuAo7ezJbZRbWEdW8j+E6xR2psPi6GJCs0FmXABALY9fNGasw1VFdUKDocQoh0CChp6Fjq/z2bzA/kUVURwTlnnHMXzrlb/ddRzvl0znnv+vbxnPPsBvt8xjm35Zz35Jwfa835fOyMcHixL+y7dcGCndfw2ZF41NRKpH9hLeQy1BwuQ80RE56BuHOZCotDWYg9fVBTVYnUmGuKDoUQQkgbdMiJLKa6Gtgz1xszvK2w+fw9vLIlErnFivuEO2CyGNa9DfHXniSk3XqosDiUgXkvJ6h30UFSFA1XEEJIe9QhEwcAUBUJsCbAGd+/6IqYzAKM/TECV1MfKSQWgYBh5GtOMDTTwvHNcXiYVaKQOJSBQCiEnYcXUqKjUFtTrehwCCGkWcHBwTrW1tbOlpaWzitWrOjW2DZmZma97e3tHR0cHBydnZ17ySu2yZMnWxsYGLiKxWKnJ23JyckqXl5e9ra2tk52dnZOn3zyiYk04+ywicMTE/uYI2zBAGioCjF102X8euEeZH23zMaoqovgv8AFqmpCHF4Xg9LCSrnHoCzEnj6oKi9DelysokMhhHRyhw8f7hIUFGTd1Os1NTVYsmSJ5dGjR+/cuXPnVkhIiEF0dLR6Y9ueO3fuTkJCQnxcXNxtmQX8lNmzZ+cfPHgwqWGbiooKvv3228yUlJRbV65cub1161aThjE/b5wdPnEAgF6mOji4yBdDeprg40PxeGv3DZRW1sg9Dm19dfgvdEVFWQ2ObohFdWXnvIu2ZW83qGpoICnygqJDIYR0EF5eXvZhYWE6ALB48eLuM2fOtGhun5Y4e/aslpWVVaWjo2OVuro6DwwMfBQcHKwnr9hKSkrYnj17dGfOnGmxZ88e3adf9/PzKzE2Nv7HHzQrK6tqX1/fMgDQ19eX2Nralqenp6u2JuZnUezNDuRIV0MFm6b3xcZzKfj2RCIScorw07S+sDHWlmscxpZd8MJrTji2MRanfo3H6LnOYILOdYMokYoKbNw9kXzlMka8vhACAd3jgpCO4N3gGIs7OcWa0jymfbcuZV9Pcs1obrvVq1ffX7VqlVlOTo4oNjZW89SpU1IpZcvIyFA1MzOrevLc3Ny8KjIystE/HMOHDxczxvDqq6/mvfPOO/ltjS0uLk7twIEDusePH9fNzs5W9fHxKfL39y8cO3Zsq+8zkJiYqBofH685ePDgv8fIm4qzpTpFj8MTAgHDwqF2+H22F/JLqjB+3QX8GZcj9zh6uBhhwCQx7t7Iw8WwFLmfXxmIPb1RXlyErIR4RYdCCOkA/Pz8SjjnWLduXdewsLC7IpEI8fHxqlOmTLEaPXq0zdPbu7i4ODg4ODguWLDA6tSpU3oODg6ODg4OjiEhITptOX9ERERCfHz87RMnTiRt3rzZ5NixY38nF43Ftn37dr2pU6da+fv724SGhv7jnEFBQbZr1qwxd3Z2LgsPD0/ctm1bxpQpU4o0NTVbNc5eWFgoCAwMtP3iiy8yDAwMJM3F2VKdpsehIV+xEQ696YsFO6Lxxo5ovDHYFu+8YA+RUH55lMswcxTmluHGyXTomWjAaWDnWo7D2q0vRCqqSIq6CAvH3ooOhxAiBS3pGZCVqKgojby8PBU9Pb0afX19CQA4OjpW7d27N62xxCE2NjYBqJvj8OuvvxqGhISkNnZcCwuLqqysrL+7+TMzM//RA/FEjx49qgHAzMysxt/fv+DSpUtafn5+JU3FNn369ILp06cX5OXlCRcuXGgeGBhY9ORYt2/fjr948aLmwYMHdSdOnGhbXV3Nhg4dWrRo0aJ8sVj8r3M3prKykvn7+9tOnjz50cyZMwtaEmdLdaoeh4bM9DSw9w1vvOxliZ/OpWD61ijkl8hvwiJjDL5TxLB0MsS5XXeQHt+5yjRV1TVg5eqOpKhLCpmsSgjpONLS0lSmTZvWIzQ0NFlTU7M2ODi4Tb0GjRk8eHBpamqqekJCgmpFRQULDQ01CAoKKmi4TVFRkeDx48eCJ4/PnDmj4+LiUt6S2FasWGG6ePHivIZtAoEAvr6+ZV999VV2dHR04smTJ5OcnJzKc3JyWvRhXyKRYOrUqVb29vYVq1ev/nt5h2fF2RqdNnEAADWREP+Z2BtfT3LBtfTHGPtjBK6lP5bb+QVCAUa97gQDUy0c39T5yjTFnt4oeZiPBylJzW9MCCGNKC4uFgQEBNh++eWXme7u7hUrV67M/vTTT7tL6/j1FQrpo0ePtheLxU4TJkx45OHhUQEAgwcPtktNTVXJzMwU9e/f36Fnz56O7u7uvV544YWCSZMmFT0rNolEgvnz55v5+/sXPpnI+ISPj4+9WCx2evLl6+vr8PXXX3dPS0v71wTHcePG9fD19XW4d++eWteuXV2+//57o5MnT2rv37/fMCIiosuTIZg9e/boNhVna98T1hE+7Xl4ePCrV68+1zFu3S/EGzuikVNYgZVjHTG9vxXqltmQveJHFQj+8iqEQgEmve8BTR2pTX5VauUlxfhp7jR4jJ2IgS/PUnQ4hHQ6jLFozrnH8xwjJiYm1dXVtdUT7OQhJydHuHTpUrPz58/rTJs2Lf/zzz+X/6S2Jnz66acmu3btMnR1dS11c3MrX758eV7ze8lPTEyMkaurq3Vjr1Hi0EBhWTWW7L2B0wm5mNjHDP+Z2BsaqvKZ8Z+bVoSwb6/BoLs2JiztAxU5nVfRgj9biaK8B3j1+5/llqgRQup09MSBtN2zEodOPVTxNF1NFWyZ4YGlI+2x/0YWJm64gNT8Urmc28RKByNnOyE3rQjhv8aDd5LVNMWe3nicfR8PM557dV9CCCFyQInDUwQChsXDxfjtVU/kFFVg3LoInIx/0PyOUmDjZowBQXZIuZ6Hywc6R5mmXT9vgDEkRV1SdCiEEEJagBKHJgy2N8ahRb6wNtTC679fxdfHE1Arh14A1+EWcBpkhmvH0xEfcV/m51M0LT19mPXsRYteEUJIO0GJwzNYGGhi3xvemNrPAuvPpGDmL1F4VNqiEto2Y4xh0ItiWDoa4NwfichIUMzCXPIk9vRBXto9FORkN78xIYQQheoQiUNxVTGqJbJZaVFdRYgvglzwRWBvRKU+wtgfz+NGRoFMzvVEXZmmM/S6aeLPn+Pw6L585lkoil0/bwBA0hUariCEEGXXIRKH9OJ0jNg7At9f/R5pRbKZZDfV0xIhb/iAMYYpP13Czsg0md64SFVDBP+FLhCqCHB4fQzKimTb06FIuiZdYdLDloYrCCGkHegQiYOhwBAmtSb47dZvGBs2FjOOzMChlEOoqKmQ6nl6m+vi8Ju+6G9riA/D4vBucCwqqmW3wqWOoQb8F7igvKgKRzfGoqaq466mKfb0QfadBJQ86lx30CSEkPamQyQO6kwdC80WYmXXlRipPhJpj9KwImIFhuwZgk8vfYrbD6W3NLq+lip+ndUPi4eLERydicANF5H+sKz5Hduoq7UORsx2xIPUIoRvu91hyzTFnj4AgOQrlxUcCSGEkGfpEInDE0bqRhjfdTz+z+z/MFd3LmyZLULuhGDK4SkI2h+E3Qm7UVTV6rtr/otQwLB0pD1+meWBzMdlGLv2PM4k5ErhChpn28cE3hNtkRydi8iDd2V2HkUyNLeAQXdzGq4ghBAl16EShyeEAiF66/XG691fx5ruazBWYyyKiovwWeRnGLZnGN4/9z6u5lx97jkKwxy64vCbA2Gur4lXf7uC707ekVnJZp+RlnD07Y7oP9Nw+2LHLNMUe/kgI/4myoufP7kjhJC2Cg4O1rG2tna2tLR0XrFiRTdFx6NsOmTi0FAXlS4YZTIKH5h9gLcM3oKLyAWnUk/h1eOvwj/EH1tvbkV+edvvlmppqInQBT4IcjfHj+FJePW3K3gsg5JNxhgGvWQPi176OLsjEZmJ8luMS17Enj7gEglSrkYqOhRCSAeVl5f3zPv519TUYMmSJZZHjx69c+fOnVshISEG0dHR6vKKrz3o8InDEwKBAHZd7DDDdAY+MfsEQZpBEFQI8MO1HzB873C8eepN/JX5F2okNa0+trqKEN9MdsFnE51xOeUhxq6NwM3MQqlfg1AowKi5vaHbVRN//nwTj3M6VpmmSQ9b6Bib0HAFIaTVvLy87MPCwnQAYPHixd1nzpxp0dh27u7uvcaPH9/j4MGDXSQSyb9eP3v2rJaVlVWlo6Njlbq6Og8MDHwUHBysJ9vo25cWre3d0WiINDDEeAiGYAgyyjJwsfAirty/grNZZ2GkZoSJ4omYaD8RFl0a/X/XKMYYXvGygnN3XczfEY2gny7ikwAnvNjPUqqxq2mIMHahC4K/vIrD62Iw6T0PaHTpGKtpMsYg9vTGjeNHUFVeBlUNTUWHRAhpjf0LLZAbL90fXBPHMkxYn9HcZqtXr76/atUqs5ycHFFsbKzmqVOnkhvb7t69e3H79u3TXbduncnbb79tOWXKlIdvvPHGQ2tr62oAyMjIUDUzM/u729jc3LwqMjJSW3oX1P51mh6HplhoWuBF0xfxidknmKY9DQa1BtgStwVjQsfg1WOv4ti9Y6isrWzx8Vwt9HB48UB4WhvgvZCbeE8GJZs6RhoYs8AFpYVVOLrxJmpkWBIqb3aePqitqcHd68+/2ikhpPPw8/Mr4Zxj3bp1XcPCwu6KRCJs375db+rUqVb+/v42oaGhOgAgEonw0ksvFZ44cSIlIiIi8d69e2p2dnYuZ86coU8qLdQpexwaoyJUgZehF7zghdyKXFwouIBredewPHc5tEXaGGc7DpN6ToK9vn2zxzLQUsW22Z74/uQdrDuTjPjsImx4xR0WBtL7f9mthy5GzHLE8c1xOP17AkbOduwQy1J3t3eApq4ekqIuwcFnkKLDIYS0Rgt6BmQlKipKIy8vT0VPT69GX19fAgDTp08vmD59ekFeXp5w4cKF5oGBgUUA8PDhQ+Evv/yiv3PnTiMVFRX+ww8/pHp5eZUDgIWFRVVWVtbf3biZmZn/6IEg1OPQKBN1E0zsNhGrzVdjju4cWDNr7E3ci6CDQXjx4IvYl7gPJVUlzzyGUMDwzqie2DzDA6kPSzFuXQTOJkq3ZNOurwn6T7BB0pUHiDp0T6rHVhSBQAi7fv1x79oV1FTRzyohpHlpaWkq06ZN6xEaGpqsqalZGxwcrNPw9RUrVpguXrw4DwACAgJ6uLm59bp3757a9u3b7125ciVx0aJFDzU1NTkADB48uDQ1NVU9ISFBtaKigoWGhhoEBQUVKOCylBYlDs8gFAjhqueKed3n4eNuH2OMxhjkF+ZjzeU1GLJnCD48/yFu5N54ZlnnSMeuOLTIF9101PHqb1fwY3gSJFIs2XQfZYVeA0xx9WgqEi53jEWixJ4+qK6sQNrN64oOhRCi5IqLiwUBAQG2X375Zaa7u3vFypUrsz/99NPuACCRSDB//nwzf3//Ql9f3zIAmDJlyqO7d+/GbdiwIat3797/GodWUVHBt99+mz569Gh7sVjsNGHChEceHh7SvQ1xO8dkud6CvNjZ2fEtW7bI5VwSiQRJJUm4VHIJN6tvogpVsNS2xOSekzHebjwM1A0a3a+8qhYrwm4i7HoWhjmY4PspbtDVVJFKTLW1Ehz6MQbZyQUY/5YbzOz1pXJcRamtqcbGudNg59EfoxcsUXQ4hHRYjLFozrnH8xwjJiYm1dXVte017TL06aefmuzatcvQ1dW11M3NrXz58uV5io6pvYiJiTFydXW1buw1ShyeQ1l1GS4XXMbVyqvIqM2AiIkw2HwwJvWcBG9TbwgF/ywX5pxjx+U0rDkcj2666tj4Sl84m+lKJZaK0mqEfh2NsqIqTHrPA3pd2/c8n2Prv8Pd6Ci8sWkHhCKaikOILHT0xIG03bMSBxqqeA6aKpoYZjwM75q9i3eM3oGniicuZV7C/FPz8cK+F7D++nrcL/nfXR4ZY5jubY0987xRXcMRtPEi9l2VzlwidS0V+C90hUDIcHhdDMpL2vf8ALGnDypKS5AZH6foUAghhDRAiYMUMMZgpWWFl0xfwidmn+Bl7ZehU6ODn2N/xuiQ0Xj9z9dxIvUEqmurAQDulvo4vNgX7pb6eDc4FivCbqKy5vlLKnWNNTBmvgtKHlfi2E83UVv975ubtBdWrn0gUlOjm0ERQoiSocRBylSFqvA29MZbZm/hQ5MPMURtCG7n3sayc8swdM9QfBX1FVIKUmCkrYbtr3nijcG2+CMyHVN+uoSsgvLnPn83G10Mn9UL2cmFOL3j9nOvx6EoKqpqsHHzQPKVS+CN3N2NEEKIYlDiIENdNboisFsgPjb/GK/qvApzbo4/bv+BCQcm4OVDL+Ngyn4sHmGJn6b1RUpeKcb+eB4RSc8/VCj26Aqv8Ta4E/kAV46kPv+FKIidlw9KCx7jflKiokMhhBBSjxIHORAKhHDXd8cbZm9gVbdVGK0+GtkF2Vh1aRWG7BmCiwUb8M00PRh1UcWMXyKx/kzyc5ds9vWzgkP/brhy+B4SI3OkdCXyZdOnH4QiEQ1XEEKIEpF54sAYs2CMnWGMxTPGbjHG3qpvN2CMnWSMJdV/169vZ4yxHxljyYyxWMaYu6xjlCd9NX34d/XHSrOVWKC/AL0EvXA45TDevTgH6pbfwdXpJr4+dQ1zt0ejsLy6zedhjGHINAeY2evh9PbbuJ9UIL2LkBM1TU1Y9nZDctTFdjvkQgghHY08ehxqACzjnDsC6A9gIWPMEcD7AMI552IA4fXPAcAPgLj+ay6AjXKIUe4EAgF66fTCq91fxSfdP0GAZgBqyquRXLsTuvaf40LRD/D7eStu3S9o8zmEIgFGz+sNHUMNHPvpJgpyy6R3AXIi9vRBYe4D5KbeVXQohBBCIIfEgXOezTm/Vv+4GMBtAGYAAgBsq99sG4AJ9Y8DAPzO61wGoMcYM5V1nIqkpaKFEcYjsNxsOZYaLoWnqgc0de6gWH89Xjw6Hm/9+TVySts23KCupYKxi1wAAEfWx6KitO29GIpg6+EFxgRIpuEKQghRCnKd48AYswbQB0AkgK6c8yf3SM4B0LX+sRmAhjc3yKxve/pYcxljVxljV4uKimQXtBwxxtBDuwdeMX0F/zH/BOPVXoRqrQFOP/gdI4NfwBsnFyA8LRzVktb98dc11oTf/N4oelheV6ZZ036qFDR1dGHu6IykqEuKDoUQQgjkmDgwxrQBhAB4m3P+j7/0vG4Au1WD2JzzTZxzD865h46OTvM7tDNqQjWM7OaLr8VvwaX4XVTmD8HlzFi8ffZtjNg3At9Ff4fUwtQWH6+7nR6Gz+iF+0kFOLMjoV3NGRB7euNhZjoeZils4T1CCJG65ORkFS8vL3tbW1snOzs7p08++cTkWe0AYGZm1tve3t7RwcHB0dnZuZci4pZL4sAYU0Fd0rCTcx5a3/zgyRBE/fcnS0dmAbBosLt5fVunJBQwvO5siVe7jkF50rtgObNgodkLv9/6HeP2j8PMYzNxMOUgymuavweEvWc3eI7rgcTLOYg+lir74KXErp83ACCZeh0IIVJ2+PDhLkFBQdaKOHf9glqZKSkpt65cuXJ769atJtHR0epNtT/Z79y5c3cSEhLi4+LibisibnlUVTAAWwHc5px/1+ClgwBm1j+eCeBAg/YZ9dUV/QEUNhjS6LS8zdWxsr8WNMp74sKFcXi560942/1t5Jfn48OIDzFs7zB8cukT3Hp465m9CR5jrNHTqxsiD97DnSvto0yzi6ERTO160nAFIaRJXl5e9mFhYToAsHjx4u4zZ860aG4feRy7pKSE7dmzR3fmzJkWe/bs+cfiRFZWVtVPVu3U19eX2Nralqenp6s21S6t63le8lg9aACA6QBuMsZu1LetAPAFgL2MsdcApAGYUv/aUQBjACQDKAPwqhxibBfMdURYNUATm26UYsOZhxgqdsSul6fjTmEsQpNCcSDlAPbe2QsHAwcEigMxpscY6Kr9cxEtxhiGTnNA8aMKnN6WgC4GGjC1lc5CW7Jk5+mN83/8hqL8XOgYmTS/AyFE7lZeWGmR/DhZqivs2enblX0y4JNmxylXr159f9WqVWY5OTmi2NhYzVOnTiVLK4bWHjsuLk7twIEDusePH9fNzs5W9fHxKfL39y8cO3ZscVP7JCYmqsbHx2sOHjy4pLn24cOHixljePXVV/PeeecduS8wRqtjtkOccxxJLkdoigRmumrY8qoXenbTQVFVEY7ePYrQpFDcfnQbakI1jLAagSBxEDy6eqCu86dORUk1gr+6isqyGkx6ry90jZV7Nc3H2Vn45e15GDrzdbiPCVB0OIR0CNJeHVORiQMA9OvXr2dZWZkgIiIiUV9fXxIfH6+6evVq06KiIuGff/75j5puFxcXh6qqKkFZWZmgsLBQZGpqWgUAn332WWZQUNC/Ztw/fezt27frHTlyRLe4uFj42muv5QcGBv69T8+ePR1TU1PVX3vttQfvv//+A0tLy5pnxV1YWCjw8fHpuXz58uyZM2cWPKv93r17Kj169KjOysoSDRs2zP6HH35I9/PzK2nq2G1Fy2p3UPF5VdgYW4UqiQBfBPbGxL7/6z2LfxiP0KRQHL17FMXVxbDsYomJ4okIsA2AsaYxAKDgQRmCv7oKDW1VBC3vC3UtFUVdSotse3cR1LW08eLqLxQdCiEdQkdaVjsqKkpjypQptnp6ejU3btxIaPja6NGjbZ5OHJ44fPhwl19//dUwJCQktS3HzsvLEy5cuNB87969aU/aJBIJLl68qHnw4EHd8PBwnerqajZ06NCiRYsW5YvF4n8sXVxZWcmGDx9uN2LEiKLVq1c/aK69oaVLl3bX1tauXbNmTaOvPw9aVruDcjRWxcc+GuiuWYsl+2LxYcgNVNWXWjoaOuKj/h8hfEo4/uP7H5homuC/1/6LkcEj8ebpN3E24yy0jVUx5o3eKMovx5+blL9MU+zpjcyEWygteKzoUAghSiQtLU1l2rRpPUJDQ5M1NTVrg4ODpVZq19yxV6xYYbp48eK8hm0CgQC+vr5lX331VXZ0dHTiyZMnk5ycnMpzcnL+MT1AIpFg6tSpVvb29hUNk4Om2ouKigSPHz8WPHl85swZHRcXl+dfHbGV5DHHgciQgYYQH3prY2dcKXZeycLNrAJsntUfXXXqJuBqiDQwznYcxtmOQ2phKsKSw3Ag+QDOZpyFsYYxAuwC0G/yCFzf/QBn/0jEsOkO/xjSUCZirwG4FLwLKVcj4TJitKLDIYQogeLiYkFAQIDtl19+menu7l6xcuXK7A8++MB80qRJz32Dn2cdWyKRYOHChWb+/v6FTyYyPuHj42Ofl5f3ry7cVatWZQ0cOPDvbU+ePKm9f/9+Q7FYXO7g4OAIAB9//HGWnp5ebWPtvXv3Lp84caIdANTW1rKgoKCH0rjO1qKhig4kIqMCv9+ugZaqCBum9YW3nXGj21VLqnE+8zxCk0JxPus8JFyCgMevwTTBBR7jLOHlbyfnyFuGc45f3p4Lva6mCFqxRtHhENLudaShisbk5OQIly5danb+/HmdadOm5X/++edSKyX79NNPTXbt2mXo6upa6ubmVr58+fK85vdqP2iOQyeSUVSDH69V4GElw7sjxXhjqPiZPQgPSh/gYMpBhN4JRc8bQyHO90DZkDsY/8JQ9DToKcfIW+avnb8i+sh+zN+8E+pa2ooOh5B2raMnDqTtaI5DJ2KhI8LHAzTRW5/jyxNJeP23SJRUNj2ht6tWV7zu8jqOBB3Bi/MGocL4MVTP9cCCP5bhxcMvYm/iXhRXNVlBJHdiTx9Iamtx99oVRYdCCCGdEiUOHZCmigBv99PCRBuG8MR8jPn+DJIePPuPv4AJ4G3RHwveGwc9Q20EpbwFYYk6Prn8CYbtHYYPIz5E9INohd+quputGNoGhkiKpEWvCCFEEShx6KAYYwiw18Qyd1U8KqnEuLXncfBGZrP7aWirYvwiN6gyNYxNmI/tw3ZinO04hKeHY9afszB+/3j8Gvcr8ssV0zPJBALY9fNGasw1VFdUKCQGQgjpzChx6OCcTVSxZoAGuqnXYvHuGKzaH4Pq2meXXep304LfvN4ozCtHWkgtPvT8CKcnn8YnAz6Bvro+vov+DiP3jcTbZ97GX5l/oVZSK6erqSP29EFNVSVSY67J9byEEEIocegUDDSE+MhHG4NMObZdzsTkDeeRW/zsT+tmPfUxdJoDMhMe468/EqEh0sAEuwn43e93HJhwANMcp+F67nUsDF+IUSGjsO76OmQWN9+jIQ3mvZyg3kUHdyIvyOV8hBBC/ocSh05CJGCY7aqN1xyFuJVdjNHfnUXk3WcPNzh4m6KvnxXiL2Tj+on0v9ttdG2wzGMZTk06he+GfAexvhibYjfBL9QPr594HX/e+xNVtVXPOPLzEQiFsPPoj7vXrqCmulpm5yGEEPJvlDh0MgMt1fGRpxoEkmq8vDkSm84mPXPCo9c4G9h5mOBSWApSruX+4zUVoQpGWo3ExhEbcTzoOBa4LUB6UTre/etdDNs3DF9GfYmkx0kyuQ6xlzeqysuQERcjk+MTQghpHCUOnZCVngo+HqAFR32O//x5B/N/j0JpEyWbTMAwfGYvdLPRwclf4/HgXuM3KTPVNsV81/k4FnQMP4/8Gf1N+2N34m4EHgzEK0deQcidEJRWl0rtGiyd3aCqoYGkKKquIIQQeaLEoZPSUhVgST8tBPRgOH47D/4/nEVybuMlmyIVIcbMd4GWriqObIxF0cOmb40uYAL4dPfBN4O/wenJp/Gux7sorS7F6kurMXTvUPzfhf/Djdwbz13WKVJRgY27J5KvXIZEzpMzCSGdy+TJk60NDAxcxWKxU8P24OBgHWtra2dLS0vnFStWdGuuvaOgxKETEzCGiT01sdRdFXnFFRj343kciclqdFuNLqrwX+iK2moJjqyPRWX5M1eJBQDoq+tjhtMMhAWEYceYHfDr4Yc/U//E9GPTMfHARGy7tQ2PKh61OX6xpzfKi4uQlRDf5mMQQkhzZs+enX/w4MF/jLvW1NRgyZIllkePHr1z586dWyEhIQbR0dHqTbUrKnZZoMSBoLdJ3Sqbxmq1WLjrBtYciEVNIyWbBqZa8JvnjIKcMhzfHIfaZso6n2CMwdXYFR/7fIwzU85gtfdqaKlo4Zur32D4vuFYdnYZLmZdhIS3bnVOa7e+EKmo0nAFIQReXl72YWFhOgCwePHi7jNnzrR41vaTJk2y/uyzz0zi4uLUmju2n59fibGx8T8+LZ09e1bLysqq0tHRsUpdXZ0HBgY+Cg4O1muq/bkuTsnQ6pgEAGCkKcTKAdrYFluKXy5lICazAD/N8IJxl3/+TJk7GGDwKz1xZnsCzu++g8Ev92zVappaKloIsg9CkH0Qkh4nITQpFIfuHsKJtBMw1TLFRLuJmGA3Aabaps0eS1VdA1au7kiKuoShM+cq7aqehHQW91d8aFGZlKQpzWOqicVl3f/zWUZz261evfr+qlWrzHJyckSxsbGap06dSm5m++ywsDDd+fPnWz548EBlwIABxWPHji308/Mr1tTUbHYsNSMjQ9XMzOzv8jFzc/OqyMhI7abamztee0I9DuRvKgKGOW7amNVLgNjMIvh9fwZXUx/+azvHAd3hPsoKt87fx41Tzf48N0msL8Z7nu/h9OTT+HrQ17DWscaGmA0YFTIKb5x6AydST6C69tnllmJPb5Q8zEdOyp02x0EIaf/8/PxKOOdYt25d17CwsLsikQjbt2/Xmzp1qpW/v79NaGioTsPtnZ2dK1euXJl75syZpC+++CLz8uXLXV588UW74OBgXUVdQ3tBPQ7kX4ZYacBKtxrrrlfixZ8vY8WYnpjta/uPT/T9A2xQmFeOi6HJ0DXWgI1b40t4t4SqUBWje4zG6B6jkVmcif3J+xGWHIZl55bBQN0A42zGIVAcCBs9m3/ta9vXCwKhEElRl2Bqp3yreRLSmbSkZ0BWoqKiNPLy8lT09PRq9PX1JQAwffr0gunTpxfk5eUJFy5caB4YGPh3WdjPP/9scPDgQb2EhASNPn36lC5btix7woQJRUZGRi2abW1hYVGVlZWl+uR5ZmamqpmZWVVT7dK8VkWjHgfSqB56Kvh4gCYc9CT45EgiFu64grKq/w3xMQHDiFm90NVaBye33kJuWuNlmq1l3sUci/oswomgE9gwfAPcTdyx8/ZOBBwIwIxjM7A/eT/Kqsv+3l5dWxsWTi5Iiryg8AW4CCGKkZaWpjJt2rQeoaGhyZqamrXBwcH/6F1YsWKF6eLFi/Matj1+/Fj4wQcf5CQlJd0KDg5OnTNnzuOWJg0AMHjw4NLU1FT1hIQE1YqKChYaGmoQFBRU0FS7lC5VKVDiQJqkrSrAMk9tjLMCjt3KxdgfzuFuXsnfr4tU68o0NXRUcWR9LIofSW/RKaFAiIHmA/H90O9xcvJJLO27FI8rHmPlhZUYtm8YPr70MeLy48A5h9jTBwU52XiYkSa18xNC2ofi4mJBQECA7Zdffpnp7u5esXLlyuxPP/20OwBIJBLMnz/fzN/fv9DX17es4X4HDx7Uf/XVV3v07NnTSSwW//21Y8cOvafPMW7cuB6+vr4O9+7dU+vatavL999/b6SiooJvv/02ffTo0fZisdhpwoQJjzw8PCqaapfT2yEXrCN8SrOzs+NbtmxRdBgd2vWcSmy+WQ0IBPhuihtG9+7+92uP7pci5Kur6GKojsB3+kJVQzYjYJxzXM+9jpCkEJxIPYGK2grY69sjoJsf8r47AJ9JL8N70ksyOTchHRFjLJpz7vE8x4iJiUl1dXVVzHK5zfj0009Ndu3aZejq6lrq5uZWvnz58rzm9yIAEBMTY+Tq6mrd2GuUOJAWyy2twY/XypFZKsDrAyzxvr8zhIK6eQ8Z8Y9waF0MLHrpw3+BCwRC2XZmFVcV49i9YwhNCsWth7cw5rIp9FkXDF25HP269YOAUWcaIc3p6IkDabtnJQ7025W0mImWCP/nrQWfrhybL6TjpZ8i8LCkEgBg4WiAwS/ZI/3WI5zf++z1L6Shi2oXTOk5BbvH7sa+cftg0NseKg8rsSTsDYwJHYNNsZvwoPSBTGMghJDOiBIH0iqqIgHm9tHGDAcBrmUUYvT3Z3E9/TEAwGmgGdxGWiLuXBZiT8tniW0AcDBwwBuTVgIA3tCcBDNtM6y9vhYvhLyAReGLEJ4ejmoJraJJCCHSQOWYpE2GWWvAur5kc/JPF7HS3wEzfGzgM9EWRXnliAhOgo6xBnq4GMklHl2TrjDpYQthymNsnbUVGUUZCEsOw/7k/TiXeQ6G6oYIsAtAoDgQVjpWcomJEEI6IupxIG1mo19XsinWkWDVoQS89cdVVNRIMGK2I0wsu+DE1lvIS2984SxZEHv6IPtOAoof5cNCxwKL3RfjxKQTWDtsLXob98a2W9swNmwsZv05C4dSDqG8punFugghhDSOEgfyXLqoCfCulzbGWAKHbj7AuP+eRVZROcYscIG6pghH1seg5LF8KpHEXj4AgOQrl/9uEwlEGGIxBGuHrcXJSSfxlvtbyC3LxYqIFRi+dzg+vfwp4h/SIlmEENJSlDiQ5yZgDFMctfCmqwruF5TD/79/4WLmI4xd5Iqqyloc2RCLqormV9N8XoZmFjAws0ByE4teGWsaY07vOTgy8Qh+GfULBlsMxv7k/Xjx8IuYcmgKdifsRlGVdG5kRQghHRUlDkRq3E3VsMpbHfoqEry+/Rq23EjFyNec8DCrFCe33oJEIvvSX7GnDzLi41BWVNjkNowx9OvWD58P/Bzhk8OxwmsFODg+i/wMw/YOwwfnP8CVnCt0J0pCCGkEJQ5Eqrpqi7DSRxP9TTg2nk/DBxcS4DHRBqk3H+LCvqTmD/CcxJ7e4BIJ7kZHtWh7XTVdvOTwEvaN24c9Y/dggt0EnM04i9nHZ2Pc/nHYenMr8supRJ0QQp6gxIFInZpIgHl9tDCtpwBX0grwZmQCunsaI/ZMJmLPyLZM06SHLXSMTZDUxHDFszgaOuKj/h/h9JTT+Mz3MxhpGOGHaz9gxL4RWHx6Mc5lnEONRPZDLoQQoswocSAywRjDiB4a+KCfGqqqqrE8KR0iCw1E7L2D1Juy+wTPGIPY0xtpsddRVV7W/A6N0BBpYLztePw2+jccnHAQM5xmICYvBotOL8Ko4FH48dqPyChS2CKAhJCnlJWVsd69e/fq2bOno52dndOSJUu6N7+X8nrW9QQHB+tYW1s7W1paOq9YsaJbc+2yQIkDkSk7g7qSTRsdCb4peoRyLQFObLmF/EzZlWnaefqgtqYGd69ffe5j9dDtgaV9l+LU5FP4YegPcDB0wNa4rRgTNgZzjs/B0btHUVlbKYWoCSFtpa6uziMiIhITExPjb926FR8eHq4THh6u9TzHPHz4cJegoCBrKYXYKk1dT01NDZYsWWJ59OjRO3fu3LkVEhJiEB0drd5Uu6zik3niwBj7hTGWyxiLa9C2mjGWxRi7Uf81psFrHzDGkhljiYyxUbKOj8iejpoA7/XXxggr4BdBKYpqa3FgbQxKC2TzB7e7vQM0dfWQFNn64YqmqAhUMNxyONYPX4/jQcexyG0RMksy8d759zBs7zB8Hvk5Eh8lSu18hJCWEwgE0NXVlQBAVVUVq6mpYYzVraPj5eVlHxYWpgMAixcv7j5z5kwLaZ33eY5dUlLC9uzZoztz5kyLPXv26Lbkes6ePatlZWVV6ejoWKWurs4DAwMfBQcH6zXVLq3rfJo87hz5G4B1AH5/qv17zvk3DRsYY44ApgJwAtAdwCnGmD3nvMVrpBPlJGAMLzpqwVavEvtjyhFUxLH7u2jM+NALKmpC6Z5LIITY0xvxf51BdVUlVFTVpHr8blrdMM91Hl53eR1ROVEIvROKfXf24Y+EP+Bs6IyJ4okY02MMtFW1pXpeQpRd+O+3LR5llWhK85gGZtplw2f0anZssKamBs7Ozo7p6elqM2fOzB02bFgpAKxevfr+qlWrzHJyckSxsbGap06dSpZWbK09dlxcnNqBAwd0jx8/rpudna3q4+NT5O/vXzh27Nh/dcE2dj2//vqrvpmZWdWTbczNzasiIyO1MzIyVBtrl9Z1Pk3mPQ6c878APGrh5gEAdnPOKznn9wAkA/CUWXBE7jy6q2HhQDVc0K9EWW45Nn5+GTU1Eqmfx87TB9WVFUiLvSH1Yz8hYAL0N+2PrwZ/hdOTT+O9fu+horYCn1z+BMP2DcNHER/heu51KuskRA5EIhESEhLi09PTY69du6Z15coVdQDw8/Mr4Zxj3bp1XcPCwu6KRCLEx8erTpkyxWr06NE2Tx/HxcXFwcHBwXHBggVWp06d0nNwcHB0cHBwDAkJ0Xl628aOvX37dr2pU6da+fv724SGhv5jn6CgINs1a9aYOzs7l4WHhydu27YtY8qUKUWampr/+iXR1PUoA0WuVbGIMTYDwFUAyzjnjwGYAbjcYJvM+jbSgZhqizBnmAB/nquCOIdh1ZrzePd9b+hpqkrtHBaOvaGmpYXkqIuw8/CS2nGboqeuh2mO0/BKr1cQlx+HkKQQHLt3DAdSDsBaxxpB4iCMsx0HQw1DmcdCiKK0pGdA1oyMjGoHDhxYfOjQId1+/fpVREVFaeTl5ano6enV6OvrSwDA0dGxau/evWmNJQ6xsbEJQN0ch19//dUwJCQktalzNXbs6dOnF0yfPr0gLy9PuHDhQvPAwMC/7yp3+/bt+IsXL2oePHhQd+LEibbV1dVs6NChRYsWLcoXi8VVjZ2j4fUMGjSoJCsr6+9flJmZmapmZmZVFhYWVY21t+HtaxFFTY7cCMAWgBuAbADftvYAjLG5jLGrjLGrRUV0t7/2Rl0kQMAwNRSb1KB7bi3e+vQ84rKavmlTawlFItj29ULK1UjU1sivhJIxht7GvbHaZzXOTDmDNT5roKemh2+jv8WIfSOw9OxSnM88j1oJjb4RIi33798X5efnC4G6uQNnzpzR6dWrV0VaWprKtGnTeoSGhiZramrWBgcH/6vXoK2aO/aKFStMFy9enNewTSAQwNfXt+yrr77Kjo6OTjx58mSSk5NTeU5Ozj8+xDd1PYMHDy5NTU1VT0hIUK2oqGChoaEGQUFBBU21S+tan6aQHgfO+YMnjxljmwEcrn+aBaDh5BLz+rbGjrEJwCYAsLOzo77gdogxBq8hKrh1qgYejwRY+t9LmDPFCVM8pDN3Sezpg/i/TiMzPg5WLm5SOWZraKpoYqJ4IiaKJyKlIAWhSaE4lHIIJ9NOoqtmV0wUT8QEuwkw06ZONUKeR0ZGhsqsWbN61NbWgnPOAgICHo0dO7Z44MCB9l9++WWmu7t7xcqVK7M/+OAD80mTJj33J83i4mJBQECAbWPHlkgkWLhwoZm/v3+hr6/vP2rCfXx87PPy8lSePt6qVauyBg4c+Pe2jV3PSy+9VAgA3377bfro0aPta2tr8fLLL+d7eHhUPKtdFpg8xl8ZY9YADnPOneufm3LOs+sfLwHgxTmfyhhzAvAH6uY1dAcQDkDc3ORIOzs7vmXLFlleApGh2mqOpBM1qCgRYId2JUZ6W2D1eEeoiZ5v0mR1VSU2zHkZToOGY8ScBVKK9vlU11bjTMYZhCaF4uL9uqqP/qb9EWgfiGEWw6AqlN5wDSHNYYxFc849nucYMTExqa6uru3q9qo5OTnCpUuXmp0/f15n2rRp+Z9//nmOtI796aefmuzatcvQ1dW11M3NrXz58uV5ze+lfGJiYoxcXV2tG3tN5okDY2wXgCEAjAA8ALCq/rkbAA4gFcC8BonEhwBmA6gB8Dbn/Fhz56DEof2rKpUg5YQElVyAzerlsLPUxYZpfWGmp/Fcxz303efISozHvI3bwATKdduS+yX3cSD5AMKSw5Bdmg09NT2Msx2HQLtA2OnbKTo80gl01sSBNO9ZiYM8qipe4pybcs5VOOfmnPOtnPPpnPPenHMXzvn4J0lD/fafcc5tOec9W5I0kI5BVUsAq8ECqNZyLBRoIT23FGN/PI/zSc+XrNt5+aC04DHu30mQUqTS0127O+a7zcexwGP4acRP6NetH3Yl7MLEgxPxytFXEJoUirLqtt39khBCZEW5PoKRTk3TQAAzbwZeUItlWjow0VbDjF+isO50UptX1rTp0w9CkahNa1fIi1AgxACzAfhuyHcInxyOdzzeQUlVCVZdXIWhe4di1cVViMmLobJOQohSoMSBKBVdcwFMXDkK75VjiaEexrt2xzcn7mDu9qsoLK9u9fHUNDVh5dIHSVGX2sUfXgN1A8x0mon9Afux3W87RlmPwrF7xzDt6DQEHgzE9vjteFzxWNFhEkI6MUociNIxchBC16YWKZceYrqBDj4e74SziXkYvy4C8fdbPyHaztMbRXkPkJt6VwbRygZjDG4mblgzYA1OTz6NVd6roCHSwFdXvsLwfcPxzrl3cPH+RUi49G+eRQghz0KJA1E6jDGYeYigYVKLyLBU+GqpY8+8/qiorkXgxgsIvda6pblt+3qBMQGSlXi44lm0VbUxyX4S/vD/AyHjQ/BizxdxOfsy5p2cB78QP2yM2YicUqlNCieEkGeixIEoJSZgsBoogoq2BCe2xMNSIMLhNwfC1VwPS/fG4KP9N1FZ07KbKGnq6MLc0RlJUZdkHLXs2evb4z3P9xA+ORxfDfoKljqW2HBjA14IfgHzT83HqbRTqK5t/ZAOIYS0FCUORGkJVRishwgBgQT7/xsNTQmwc44X5g6ywY7L6Xjx58vILixv0bHEnt54mJmOh1kKvyOuVKgJ1eDXww+bX9iMo4FH8brL67jz+A6WnF2CEcEj8O3Vb3G3sP0MzRBC2g9KHIhSU9USwGqQANXlEoR+FwVey7FiTC9seMUdSQ+KMfbHCFxMbr6E3K6fNwAguQP0OjzNoosF3uzzJk4EncD64evRx6QPdsTvQMD+AMw8NhMHkg9QWSchRGoocSBKT9NQALP+DEUPqnBoQzS4hGNMb1McWOQLfS1VTNsaiY1nU55ZNdHF0Aimdj07xHBFU4QCIQaZD8IPQ3/AycknsaTvEjyqeISPLnyEYfuGYc2lNbiVf6tdVJcQQpQXJQ6kXdC1EMC4N0d2QglO74oDANiZaOPAwgHw622KL/9MwBs7olFU0fT4vp2nNx7cTUJRXq68wlYYIw0jzHaejYMTDuK30b9huOVwHEo5hKlHpmLyocnYeXsnCiult6gYIe1dWVkZ6927d6+ePXs62tnZOS1ZsqT7k9cmT55sbWBg4CoWi52e3i8/P184evRomx49ejjZ2Ng4nTp1SutZ7S3ZPyYmRu3Jct4ODg6O2trafdasWWMiu6tvHUocSLth7CiEjnUtEs7n4Vp43fi9lpoI617qg5VjHXHqdi4C1l1AYk5xo/uLvXwAoEP3OjyNMYa+XfviM9/PcHrKaazsvxJCgRBfRH2BYXuH4b2/3kNUdhSVdZJOT11dnUdERCQmJibG37p1Kz48PFwnPDxcCwBmz56df/DgwaTG9ps7d67FCy+8UHTv3r1b8fHx8W5ubhXPam/J/q6urpUJCQnxCQkJ8XFxcfHq6uqSqVOnFsjs4luJEgfSbjDGYO4pgrpxLS4F38Pd2Ad/t7/m2wO7Xu+PksoaTFh/AQdu/HtRVf1u3WFsaa3Ud5GUpS6qXTCl5xTsGbsHe8fuRaA4EOczz+O1E6/BP9Qfm2M3I7es4/fGkI6pf//+9k8+oaupqblv2bJFvzX7CwQC6OrqSgCgqqqK1dTUMMYYAMDPz6/E2Ni45ul9Hj58KIyMjOzy9ttv5wN1yYeRkVFtU+0t3b/hNgcPHtSxtLSstLe3r2rN9ciSQpbVJqStmIDBepAIKcdrcHzzLUx6TwPG5joAAM8eBjjypi8W/nENb+2+gevpBVgxphdURf/Lj+08fXApZBdKCx5DS69Vv1c6lF6GvfCh4YdY5rEMJ9NOIiw5DD9e/xHrbqzDILNBmCieiIHmA6Ei+NcKwIQ06fjGHyzyM9I0pXlMIwurslHz3262HOry5ct3AODLL780PnfuXJdZs2b9fYvVvn379iwtLf3XcrtffPFFxoQJE/7uoqypqYGzs7Njenq62syZM3OHDRtW+qxzJiYmqhoYGNRMnjzZOj4+XtPFxaV08+bNGU216+joSFqyf8Ptdu3aZTBp0qSHzV2/PFGPA2l3hCoMVkOEAJPgwH+vobSw8u/XTHTU8cfr/fGabw/8djEVL22+jAdF/+shFHv5AJwj5WqkIkJXOuoidYyzHYdfRv2CwxMP41WnVxH3MA5vnXkLLwS/gB+if0BaUZqiwySkRdatW2d4/Phx3bCwsHsi0f8+F0dHRyc+6fpv+NUwaQAAkUiEhISE+PT09Nhr165pXblyRf1Z56upqWG3b9/WXLhwYd7t27fjNTU1JStXruzWVHtL93/yekVFBTt16pTu9OnTleo+8y3ucWCMjQQwBcB6zvkNxthczvkm2YVGSNPUtAWwGgTcO12LsB+iMPUDH4hU6z5QqAgFWDnWEX0s9bA8OBb+P0Zg3ct90N/GEEYWVtDrZoqkqItwGTFawVehXKx0rPB237exsM9CRGRGIDQpFL/e+hVb47bCo6sHAsWBGGk1EuqiZ/4uJZ1YS3oGZOWXX37R3717t8GJEyeS1dTU/lE61NIehyeMjIxqBw4cWHzo0CHdfv36NTo3AQCsra2runbtWvWkZ+LFF198/MUXX3RbtmxZbmPtLd3/yevBwcG6jo6OZRYWFv8aJlGk1vQ4zAbwLoBpjLFhANxkEhEhLaRpJICZF1CYXYVDP9WVaTY01qU7DiwcAB0NEV7ZEonNf9VNqBR7+iA9LgYVpSWKCFvpqQhUMNRyKNYOX4sTQSewuM9i5JTmYEXECgzbOwyfXf4Mtx/eVnSYhPxt165duj///LPx0aNHUzQ1Nf9Vb9ySHof79++L8vPzhQBQUlLCzpw5o9OrV68mkwYAsLS0rOnWrVtVTEyMGgCcOHFCp2fPnhVNtbd0/yev796922DKlCmP2vq+yApraU03Y2wT53xu/eMvAAznnPeTZXAtZWdnx7ds2aLoMIiCPIirQX6cAI6DTTD0Jed/vV5cUY3lwbE4FpeDMb27YVkfDez/eDn8Fi2D48ChCoi4/ZFwCa7mXEVIUghOpZ1ClaQKvQx6IUgcBD8bP+io6ig6RNIGjLFozrnH8xwjJiYm1dXVtfm7sMmQnp6em66ubo2GhoYEAObNm5e7ZMmSVsUUGRmpMWvWrB61tbXgnLOAgIBH33zzTTYAjBs3rsfly5e7PH78WGRoaFjz/vvv339y/IsXL2rMnTvXuqqqillaWlbu2rUr1djYuLapdgAYPHiw3bZt29Ksra2rm9quqKhIYGlp6ZKSknLT0NCwZffXl6KYmBgjV1dX68Zea03iEMA5P9Dg+Zuc87XSCfH5UOLQuXHOkXG5BsVpQvhM6YE+w3o0us3m83fx5Z+JsDbQQGDSrzAX2yPgnY8UEHH7VlhZiCN3jyAkKQR3Ht+BulAdI61GIlAciL5d++LJTHSi/DpK4kCk71mJQ7NDFYyx/zLGWMOkAQCUJWkghDEGCy8R1I1qcXHfXaTG/bukkDGGuYNsseM1LxRW1CAa5ki5Ho3qimf2RJJG6Krp4uVeLyN4XDB2++/GONtxOJ1xGq8efxXj94/HL3G/IL+c/o4Q0lG1ZI5DMYCDjDFNAGCMjWKMXZBtWIS0zpMyTZGWBH9uikN+VuM3gfK2NcThNweCW/UGr6nG11sPoLqWbn7UFowxOBk54f+8/w+nJ5/GpwM+hYG6Ab6P/h4j9o3AW6ffwl+Zf6FGolTzugghz6nZxIFz/hGAXQDO1ScMSwG8L+vACGktoWrdapocdatplhVVNrpdN111bFw2CRI1LaRGX8YrmyORW0Q9D89DU0UTAXYB2Oa3DQcmHMAMxxm4kXcDC8MXYlTIKPx47UdkFHeMlUkJ6exaMlQxHMDrAEoBGAFYzDk/L+vACGkLNW0BLAcJUFlSi9AfrqCmuvE5RepqKnDxGYBeNRm4lfEI/msjcCVV6SYvt0s2ujZY6rEUpyadwvdDvoe9vj22xm3FmNAxmHNiDo7dO4bK2saTOtIuSSQSCU1s6UDq/z2b7IptyVDFhwBWcs6HAJgEYE99OSYhSknLSIDuXkDh/Soc+elak6tBir28IamswE/DdaCtJsJLmy5ja8Q9Wj1SSlSEKhhhNQIbR2zE8aDjWOi2EBlFGVj+13IM2zsMX0R9gTuP7yg6TPL84vLy8nQpeegYJBIJy8vL0wUQ19Q2La6q+HsHxkwBhHDOfZ4zPqmhqgrSmCdlmk5Du2LIi/9a1A411dXY+PrL6Ok9EP1nzsc7e2NwIv4BxrqY4ssgF2ip0R3ZpU3CJbicfRlhSWEITw9HtaQavY16Y6J4Ivys/aCtqq3oEDsVaVRVREdHm4hEoi0AnEF3I+4IJADiampq5vTt27fRxWtanTgAAGNMg3Ne/rzRSQslDqQxDcs0fV+ygetg639tc+THr5EWex1vbNoOxgT46dxdfH08AbbG2tg4rS/sTOgPmaw8rniMw3cPIzQpFMkFydAQaWCU9SgEiYPgauxKZZ1yII3EgXQ+bcoOlSlpIKQpf5dpGtYiYncK0m7l/Wsbsac3youLkHX7FhhjmD/EFttf88Kj0ioErIvAsZvZCoi8c9BX18d0x+kIHR+KnWN2YkyPMTieehzTj01HwIEAbLu1DY8qaN4JIcqGupVIh8YEDNaDRRBpSnDs55t4eP+fZZo93DwgUlFFUtSlv9sG2Bnh0Ju+EHftgvk7r+E/R2+jhko2ZYYxBhdjF6z2WY0zU87gY5+PoaOqg2+ufoPh+4Zj6dmliMiKQK1E7jfPI4Q0ghIH0uH9o0zzh2iUFf9vRr+Kujqs3dyRFHURXPK/5KC7ngb2zOuP6f2tsOmvu5i2NRJ5xVQJIGtaKloIFAdix5gdCBsfhpccXsKVnCuYf2o+RoeOxoYbG3C/5L6iwySkU6PEgXQKal0EsBwoQEVJLcJ+uILa6v8lCWJPH5Q8eoicu0n/3EckxCcTnPHdFFfcyCjA2LXnEZ2mVKvbdmh2+nZY3m85wieH45vB38BG1wY/xfyE0SGjMe/kPBxPPY6q2ipFh0lIp0OJA+k0tIwF6O4JFGRV4cim/5Vp2rh7QiAU/mO4oqFAd3OEzh8ANZEQUzddwraLqVSyKUeqQlWMsh6Fn0f+jGNBxzDPdR7uFt7FO+fewYh9I/D1la+RUpCi6DAJ6TTaVFWhbKiqgrRGzs0aPLwlgPPwbhg82REAEPzZShTm5mD2D5uanM1fWFaNpXtvIDwhFxPcuuM/gb2hqUolm4pQK6nFpexLCE0KxZn0M6jhNXA1dkWQOAijrEdBU0VT0SG2C1RVQdqCehxIp9PVWYguFrWIC89B7F9pAOqGKwpysvEwI63J/XQ1VbB5hgfeecEeB2LuY+L6i7iXXyqvsEkDQoEQvma++G7Idzg1+RSW9V2Goqoi/N/F/8PQvUOx+uJqxObFUs8QITJAiQPpdBhjMO8vgpphLSJ2JyPtdh7s+vUHGGtyuOIJgYBh0TAxtr3qidziCoxfG4ETt3LkFDlpjKGGIWY5z8KBgAP43e93jLQaiaP3juKVo68g8GAgdsTvQEFFgaLDJKTDoKEK0mnVVHKknKgFrxFgyvueOPHTGlSVl2PGVy1bMT7zcRkW7LyG2MxCzB9ii2Uj7SESUi6uDEqqSnAs9RhC74Qi7mEcVAQqGG45HIHiQHiZekHA6N8JoKEK0jaUOJBOrbJYgrsnJFDTFMHR6yEu7PkVr/13M/S6mbZo/4rqWnx8KB67otIxwM4QP07tA0NtNRlHTVoj8VEiQpNCcfjuYRRVFcFM2wwT7CZggt0EdNPqpujwFIoSB9IWlDiQTq80V4LUMxxdjCuRl7gBg155Ff3GB7XqGHuvZuCj/XEw1FLFhlfc0cdSX0bRkraqrK1EeFo4QpNCEZkTCQETYED3AQgSB2GQxSCoCFQUHaLcUeJA2kLm/XWMsV8YY7mMsbgGbQaMsZOMsaT67/r17Ywx9iNjLJkxFssYc5d1fIRomQhg6gkU56pDTbs7kqIutvoYUzwsEDrfB0IBw5SfL2HH5TSamKdk1IRqGGMzBltGbcHRiUfxmvNrSHyUiLfPvo0R+0bgu6vf4V7hPUWHSYjSk8dA328ARj/V9j6AcM65GEB4/XMA8AMgrv+aC2CjHOIjBAY9hDDoVYvamh7ITkpE8aP8Vh/D2UwXh9/0xQA7I3y0Pw7L9sWgvIpuk6yMLHQssNh9MY5POo51w9bB1dgVv8f/jvH7x2PmsZk4kHwA5TW0JA8hjZHLUAVjzBrAYc65c/3zRABDOOfZ9ct0n+Wc92SM/Vz/eNfT2z3r+I66unzXoMGyvQjS4XEAt3R9kFMdASuRBfoJ2lZqyQFkPS5HZkEZNFVEsO+mDXWRUKqxEumrklTjYXk+8svzUVFbASETwlDdEEaaRtAUaaEjrtVpvWM7DVWQVlPU3Wu6NkgGcgB0rX9sBiCjwXaZ9W3/ShwYY3NR1ysBsZYWampqZBct6TTsH15Anm4XZIDDVmAMA8m/V9RsDgNgrq8BbXURknNLcDOzEHYm2tDXVJV+wERqVAUqMNUyRTctU5RUFSOvPonILc+FpkgTxhrGMNAwgIjRTb9I56bwnwDOOWeMtbrbg3O+CcAmAPDw8OB9jhyWemykcyrZvg3XjobiqskiTFkxELrGbbsLoRUAg0dlmL8zGnFZRXhzmB3eHmEPoaAjfnbtmIqqinD07lH8lhSK249uQ02YjxFWIxAkDoJHV48m7zLabuzYrugISDukqMThAWPMtMFQRW59exYAiwbbmde3NUsgoLpsIh2OAwfi2tEQVJcn4/A6XQQt7wt1rbbNuLcw0ETwGz74vwNxWHs6GTcyCvDfqX1goEW9D+2BjqoOpjpMxVSHqYh/GI/QpFAcvXsUR+4egWUXS0wUT0SAbQCMNY0VHSohcqOov7YHAcysfzwTwIEG7TPqqyv6Ayhsbn4DIdJm0sMWOsZdoW+SjaL8cvy56SZqayTN79gEdRUhvprkii8CeyPy3iOMWxuB2MwC6QVM5MLR0BEf9f8I4VPC8R/f/8BY0xj/vfZfjAweiTdPv4mzGWdRI6EhU9LxyXxyJGNsF4AhAIwAPACwCsB+AHsBWAJIAzCFc/6I1fX7rUNdFUYZgFc551ebO4eHhwe/erXZzQhpsbO/b8GN44cxYt73OPfHPTj4mGLYdIfn7pqOzSzA/B3XkFdciY8DnDC1n0X77+7uxFILUxGWHIYDyQfwsOIhjDWMEWAXgIl2E2GpY6no8JpF93EgbdEhbgBFiQORtqyEeOxetRz+i99F4SMLXD2Siv4TbNB3tPVzH/tRaRXe2n0d55PyMcXDHGsCnKGuQlUX7Vm1pBp/Zf6FsKQwnM86DwmXwLObJyaKJ2KE5Qioi9QVHWKjKHEgbUGJAyGN4BIJfp4/E2YOThj79ns4+Us8kq48wAtznCD26Nr8AZpRK+H476k7+PF0Mpy66+CnaX1hYUBLQXcED0of4EDKAYQmhSKrJAtdVLtgrM1YBImD0NOgp6LD+wdKHEhbUOJASBNObVmP+L/OYP6WnWBMhIM/3EBuWjEmLO2Dbja6UjlH+O0HWLLnBhhj+GGqG4b2NJHKcYniSbgEV3KuICQpBKfSTqFaUg1HQ0cEiYPg18MPXVS7KDpEShxIm1ApAiFNsPP0QXVlBdJib0CkIoTf/N7Q0lfD0Y2xKMqXzl0Fh/fqikNv+qK7ngZm/3YFP5y6A4mk/SfzBBAwAbxMvfDVoK9wevJpvO/5Pqol1fjk8icYtncYPoz4ENEPounW5KTdoR4HQppQW1ODjXNfgZ1Hf4xesAQA8DinFCFfRUNTRxVBy/tCTVM6CyOVV9Xio/1xCLmWiSE9jfHDi27QoxtGdTicc9x6eAshSSE4du8YSqtLYa1jjUBxIMbZjoORhpFc46EeB9IWlDgQ8gzH1n+Hu9FReGPTDghFdbc9yUp8jIM/3kB3sR7GvukKoVA6HXecc/wRlY7VB2+hq446fprWF85m0hkSIcqnrLoMJ9JOIDQpFNdzr0PERBhsMRiB4kAM6D4AQoHsJ8xS4kDagoYqCHkGsacPKkpLkBF/8+82s576GDrNAZkJj/HXH4lS62pmjOEVLyvsneeNWglH4MaL2Hs1o/kdSbukqaKJCXYT8Lvf7zgQcACv9HoF1x5cw8LwhRgVMgrrrq9DZnGmosMk5F+ox4GQZ6iuqsTGOa/AcdBQjJiz8B+vXT6QguhjafCeaAv3UVZSPe/Dkkos3n0dF5If4iVPC6wa50Qlm51AdW01zmaeRUhSCC5mXQQHR3/T/ggSB2GY5TCoCqU7fEU9DqQtKHEgpBmHvv8CmbfjMO+nbRA06D7mEo4Tv9xC8tVcjJ7rDFt36VZE1Eo4vj2RiA1nU+BirosNr7jDXJ9KNjuL7JJs7E/ej7DkMGSXZkNXTRfjbMYhUBwIsb5YKuegxIG0BQ1VENIMsac3ygoLkH0n8R/tTMAwfGYvdLPRwclf4/HgXpFUzysUMCwf7YBN0/viXl4pxq6NwF93Wr9aJ2mfTLVNMd9tPo4FHsPPI36GVzcv7E7cjcCDgXjlyCsIuROC0uq2Lf1OyPOgHgdCmlFZVoaNr78Mt1FjMWTGnH+9XlZUhZCvrqK6SoJJ7/WFjqGG1GO4l1+KN7ZH405uMZaOsMfCoXYQ0Cqbnc6jikc4nHIYoUmhSClMgYZIA6OtRyNQHAhXY9dW376cehxIW1DiQEgLhH35MfIz0jFn7ZZGfzk/yq4r09TWV0Pgu32hpiH9hWfLqmqwIvQm9t+4j+EOJvjuRTfoakinHJS0L5xzxOTFIDQpFH+m/onymnLY6tpiongixtmOg4G6QYuOQ4kDaQsaqiCkBew8vVGU9wC5qXcbfd3AVAuj5zmjIKcMJzbHQVLb9tU0m6KpKsL3L7phTYATzt3Jw7i1EYi/L93hEdI+MMbgZuKGNQPW4MyUM1jtvRpaKlr45uo3GL5vOJadXYaLWRch4dL/f0gIJQ6EtIBtXy8wJkBy1MUmt7FwMMDgV3oiPf4R/tqTJJM7AjLGMMPbGnvmeaOyphYTN1xASDSV7HVmWipaCLIPwk7/nQgdH4qpPaciMicS807Nw+iQ0dh4YyOyS7IVHSbpQGiogpAW2rtmBcoKCzDr2w3P3O5SWDKuHU/HgEl2cBshu6WV84or8eaua7h89xGm9bfEyrGOUBNRySYBqmqrcDr9NEKSQnA5+zIYGHzMfBBoF4ihFkOhIqwb4qKhCtIW1ONASAuJPb3xMDMdD7OefVOm/gG2sHU3xoWQZNy9IbsqCOMuatjxmhfmDbLBjsvpmPLzZdwvkM4aGqR9UxWqYnSP0dj8wmYcCzyGuS5zkfQ4CcvOLcOI4BH45so3uFvQ+LAbIc2hxIGQFrLz9AYAJEddeuZ2TMAwYpYjTKx0cPKXW8hNk908BJFQgA/G9MLGV9yRkluCsWsjcCE5X2bnI+2PeRdzLOqzCCeCTmD98PVwN3HHzts7EXAgQNGhkXaKEgdCWqiLgRFMxT2R9Ix5Dk+IVIXwX+ACDW1VHNkQi+JHFTKNza+3KQ4sGgBDLVVM3xqJDWeTadVF8g9CgRCDzAfh+6Hf4+Tkk1jad6miQyLtFCUOhLSC2NMHD+4moygvt9ltNXVU4b/IBTWVtTiyPhZVFTUyjc3WWBv7Fw7AmN6m+OrPRMzdHo2iimqZnpO0T0YaRnjV+VVFh0HaKUocCGmFJ8MVSc0MVzxh2F0bo+f2xqPsUhzffEsmZZoNaamJsPalPvi/sY44k5CL8WsjkJBDJZuEEOmhxIGQVtDv1h3GltYtGq54wsLRAINfskf6rYeI2CubMs2GGGOY7dsDu+b2R2lVLSauv4j917Nkek5CSOdBiQMhrWTn6YOsxHiUFjxu8T5OA83gNtISN89lIfa0fO670M/aAEfe9EVvM128vecGVh2IQ1UN3RCIEPJ8KHEgpJXEXj4A50i5Gtmq/Xwm2sLGzRgRwUm4FyufygcTHXXsfN0Lc3x7YNulNEzddAk5hbKdqEkI6dgocSCklYwsrKDXzRR3Ii+0aj8mYBgx2xEmll1wYust5KUXyyjCf1IRCvDRWEese7kPEnKKMXbteVxKeSiXcxNCOh5KHAhpJcYYxF4DkHErFhUlJa3aV0VViDELXKCuKcKR9TEoeSy/T/9jXbrj4KIB0NVQwbStkdj0VwqVbBJCWo0SB0LaQOzpDUltLe5ei2r1vlq6ahi7yBVVlbU4skH2ZZoN2Zl0wYFFvhjl1BX/OZqABTuvoZhKNgkhrUCJAyFt0M1GDG1Do1ZVVzRkaKaNUa8742FWKU5uvQWJRH6f/LXVRFj/sjs+8u+FE/EPELD+ApIeyGfYhBDS/lHiQEgbMIEA4n7eSL1xDdUVbRtusHIyxKAXxUi9+RAX9iVJOcJnY4xhzkAb7JzjhaLyGgSsv4BDMfflGgMhpH2ixIGQNhJ7eqOmugr3YqLbfAznweZwHW6B2DOZiD0j/+Wx+9sY4shiX/Qy1cGbu65jzaF4VMv4JlWEkPaNEgdC2sjMwQkaXXSQFNm24YonfILsYO1ihIi9d5B6U/4LVHXVUceu1/tjlo81frlwDy9vvozcIirZJIQ0jhIHQtpIIBTC1qM/7l67gprqtk8wFAgYXnjNCUYWXXBiyy3kZ8p/voGqSIDV453w36luiMsqgv/aCETdeyT3OAghyo8SB0Keg9jLG1XlZUiPu/Fcx1FRq1tNU01ThCPrY1FaUCmdAFspwM0M+xcOQBc1EV7afBlbzt+lkk1CyD9Q4kDIc7B0doOqhiaSIlu26NWzaOmpwX+hCyrLanBkQyyqK2ulEGHr9ezWBQcWDcCIXib49MhtLNp1HaWV8isZJYQoN0ocCHkOIhUV2Lj3Q8rVy5DUPv8feiPzLnhhjhPyM4pxQs5lmg11UVfBT9P64n0/Bxy7mY2A9ReQnNu6m10RQjomShwIeU5iLx+UFxchK+GWVI5n3dsIvlPskRqbj4shyVI5ZlswxvDGYFvseM0Lj0urELAuAsduZissHkKIclBo4sAYS2WM3WSM3WCMXa1vM2CMnWSMJdV/11dkjIQ0p4drX4hUVJEU9fzDFU+4DDWHy1BzxIRnIO6c/Ms0G/KxM8Lhxb4Qd+2C+Tuv4T9Hb6OGSjYJ6bSUocdhKOfcjXPuUf/8fQDhnHMxgPD654QoLRV1dVi7uSMp6iK4RHp/UAdMFsO6tyH+2pOEtFuKXZTKVFcDe+b1x/T+Vtj01128siUSecWKmcBJCFEsZUgcnhYAYFv9420AJiguFEJaRuzpg5JHD5FzV3p3gBQIGEa+5gRDMy0c3xyHh1mKnWOgJhLikwnO+G6KK2IyCzB27XlEp1HJJiGdjaITBw7gBGMsmjE2t76tK+f8yUBqDoCuigmNkJazcfeEQCiU6nAFAKiqi+C/wAWqakIcXheD0kLFf8oPdDdH2IIBUFcR4sWfL+O3C/eoZJOQTkTRiYMv59wdgB+AhYyxQQ1f5HW/jRr9jcQYm8sYu8oYu5qXlyeHUAlpmrq2NiycXJAUeUHqf0S19dXhv9AVFWU1OKrAMs2Gepnq4OAiXwzpaYzVh+Lx1u4bKKuikk1COgOFJg6c86z677kAwgB4AnjAGDMFgPrvuU3su4lz7sE59zA2NpZXyIQ0Sezpg4KcbORnpEn92MaWXfDCa07ISy/GqV/jwRVUptmQroYKNk33wLujeuJw7H1MXH8Rd/OoZJOQjk5hiQNjTIsx1uXJYwAvAIgDcBDAzPrNZgI4oJgICWkdu379Acaee+2KpvRwMcKASWLcvZGHi2EpMjlHawkEDAuH2mHbbE/kFlcgYN0F/BmXo+iwCCEypMgeh64AIhhjMQCiABzhnP8J4AsAIxljSQBG1D8nROlp6enDrKcjkqNkkzgAgMswc/QebIYbJ9Nx63yWzM7TWgPFxji8eCBsjLXwxo5ofHEsgUo2CemgFJY4cM7vcs5d67+cOOef1bc/5JwP55yLOecjOOc0bZu0G2JPH+Slp+Jxzn2ZHJ8xBt8pYlg6GeLcrjtIj1dsmWZDZnoa2PuGN172ssRP51Iw45co5JcofjInIUS6FD05kpAORezpDQBIlnJ1RUMCoQCjXneCgakWjm9SfJlmQ2oiIf4zsTe+nuSC6LTHGLc2AtfTHys6LEKIFFHiQIgU6RiboKuNHZJkOFwB1JdpLnSBSE2II+tjUVZUJdPztdZkDwuELvCBSMgw5edL2H45jUo2CekgKHEgRMrEnj7ITkpE8aN8mZ6ni4E6/Be4oLykqm41zSrFl2k25NRdF4cXDYSvnRFW7o/Dsr0xKFeyGAkhrUeJAyFSZvdkuOLKZZmfy8RKByNnOyE3rQjhSlKm2ZCupgq2zuyHpSPtEXYjCxM3XEDaw1JFh0UIeQ6UOBAiZYZmFjAws5BZWebTbNyMMSDIDinX83D5gHKUaTYkEDAsHi7Gr7P6IaeoAmPXRuBU/ANFh0UIaSNKHAiRAXsvH2TGx6GsqFAu53MdbgGnQWa4djwd8RGyqeh4XkN6muDQIl9YGWpizu9X8c3xRNQqWQ8JIaR5lDgQIgN2nj7gXIKU6Ei5nI8xhkEvimHpaIBzfyQiI0E5q5gtDDQR/IYPXvSwwLozyZj1axQelSrXxE5CyLNR4kCIDJhY20DHuKtMyzKfVlem6Qy9bpr48+c4PLqvnHMJ1FWE+HKSC74I7I3Ie48wbm0EYjIKFB0WIaSFKHEgRAYYYxB7eiMt9joqy8rkdl5VjboyTaGKAIfXxyhdmWZDUz0tEfKGDwBg8k+X8EdkOpVsEtIOUOJAiIyIPX1QW1ODe9evyPW8OoYadWWaRVU4ujEWNUpcAtnbXBeH3/RFf1tDrAi7ieXBsaioVt54CSGUOBAiM93tHaClp48kOQ5XPNHVWgcjZjviQWoRwrfdVroyzYb0tVTx66x+WDxcjH3RmQjaeBHpD+XXS0MIaR1KHAiRESYQwK5ff9y7fhXVVfJfs8G2jwm8J9oiOToXkQfvyv38rSEUMCwdaY9fZnkg41EZxq2LwJmEXEWHRQhpBCUOhMiQnacPqisrkBZzXSHn7zPSEo6+3RH9ZxpuX1TOMs2Ghjl0xeE3B8JMTwOzt13BdyfvUMkmIUqGEgdCZMjCsTfUtbRlvnZFUxhjGPSSPSx66ePsjkRkJir/glOWhpoIXeCDwD7m+DE8CbN/u4KCMuWd5ElIZ0OJAyEyJBSJYOvhhZToSNTW1CgmBqEAo+b2hm5XTfz58008zlHOMs2G1FWE+GayCz6b6IxLKQ8xdm0E4rLkczMtQsizUeJAiIzZefqgsrQUGfE3FRaDmoYIYxe6QCBkOLwuBuXFyv8JnjGGV7yssPcNb0gkHIEbL2LvlQxFh0VIp0eJAyEyZuXiBhU1dSQraLjiCR0jDYxZ4ILSwioc3XgTNe2k7NHNQg+HFw+Ep7UBlofE4v0QKtkkRJEocSBExlRU1dCjjweSoi5BIlHsH7xuPXQxYpYjcu4W4vTvCe3mhksGWqrYNtsTC4faYveVDEz+6RIyH1PJJiGKQIkDIXIg9vRGWWEBsu8kKjoU2PU1Qf8JNki68gBRh+4pOpwWEwoY3h3lgM0zPJCaX4qxayNw7k6eosMipNOhxIEQOejRpx+EIpHCqiue5j7KCr0GmOLq0VQkXM5WdDitMtKxKw696YtuOuqY9WsUfgxPgoRKNgmRG0ocCJEDNU1NWLn0QVLUJaUYHmCMYfDLPWHWUx9nticg647yl2k2ZG2khbAFAzDBzQzfnbyDOb9fRWFZtaLDIqRToMSBEDmx8/RGUd4D5N5LUXQoAOrKNEfPdYausQaO/XQTBQ/a15wBDVUhvpviijUBTjiflIdx6yJw6z6VbBIia5Q4ECIntn29wAQChaxd0RR1LRX4L3T9X5lmifKXaTbEGMMMb2vsmeeNqhoJAjdcREh0pqLDIqRDo8SBEDnR1NGFhaOz0sxzeELXWANj5rug5HEljv10E7XVEkWH1Grulvo4vNgX7pb6WLYvBh+G3URlDZVsEiILlDgQIkd2nj54lJWBh5nKdSOjbja6GD6rF7KTC3F6x22lmIfRWkbaatj+mifeGGyLnZHpmPLzZdwvKFd0WIR0OJQ4ECJHdv36AwCSryjPcMUTYo+u8BpvgzuRD3DlSKqiw2kTkVCA9/0c8NO0vkjJLcHYtRGISMpXdFiEdCiUOBAiR10MjGAq7ql0wxVP9PWzgkP/brhy+B4SI3MUHU6bjXbuhoOLBsBIWxUzfonE+jPJVLJJiJRQ4kCInIk9ffDgbjKK8nIVHcq/MMYwZJoDzOz1cHr7bdxPKlB0SG1mY6yNsAUDMNalO74+noi526NRWE4lm4Q8L0ocCJEzO09vAFCq6oqGhCIBRs/rDR3D+jLN3PZVptmQlpoI/53qhlXjHHE2MRcB6yKQkFOk6LAIadcocSBEzvS7dYexpTWSoi4oOpQmqWupYOwiFwDAkfWxqChtv5/UGWN4dUAP7J7bH2VVtZiw/gL2X89SdFiEtFuUOBCiAGKvAchKvI3SAuW9Y6OusSb85vdG0cPyujLNmvZXptmQh7UBDi/2hYu5Ht7ecwOrDsShqp1fEyGKQIkDIQog9vQGOEfylcuKDuWZutvpYfiMXrifVIAzO9rPappNMemijp1zvPD6wB7YdikNUzddQnYhlWwS0hqUOBCiAIYWVtA37a601RUN2Xt2g+e4Hki8nIPoY6mKDue5qQgF+NDfERtecUdiTjHGrY3AxRQq2SSkpShxIEQBGGOw8/RBxq1YVJSUKDqcZnmMsUZPr26IPHgPd6603zLNhsb0NsWBRQOgp6mKaVsi8dO5lHbfo0KIPFDiQIiCiD29Iamtxd1rUYoOpVmMMQyd5oDuYj2c3paA7JSOsZiUnUkX7F84AH7OpvjiWALm77iG4or2OxGUEHlQysSBMTaaMZbIGEtmjL2v6HgIkYVuNmJoGxq1i+EKABCqCOA3rze0DdRwdGMsCvPab5lmQ9pqIqx7uQ8+8u+Fk7cfIGDdBdx5UKzosAhRWkqXODDGhADWA/AD4AjgJcaYo2KjIkT6mEAAcT9vpN64huqKCkWH0yLq2ioYu9AVnHMcXte+yzQbYoxhzkAb/DHHC0UVNQhYdwEHY+4rOixClBJTtjE9xpg3gNWc81H1zz8AAM75503t42Gty6+u8pVThIRIT8ZDYO8VhnFuHPbdFB1Ny90vMsOBhMkw7ZKFcT1DIBR0nLLGqloJkh4Uo7iyBt101GFpqAkBmKLDkgk2+2g059xD0XGQ9kUZE4dJAEZzzufUP58OwItzvuip7eYCmFv/1BlAnFwDfX5GANrTVO72Fi9AMctDe4sXaH8xyzJeK865sYyOTTookaIDaCvO+SYAmwCAMXa1vWXN7S3m9hYvQDHLQ3uLF2h/Mbe3eEnHp3RzHABkAbBo8Ny8vo0QQgghCqaMicMVAGLGWA/GmCqAqQAOKjgmQgghhEAJhyo45zWMsUUAjgMQAviFc36rmd02yT4yqWtvMbe3eAGKWR7aW7xA+4u5vcVLOjilmxxJCCGEEOWljEMVhBBCCFFSlDgQQgghpMXadeLQHm5NzRizYIydYYzFM8ZuMcbeqm83YIydZIwl1X/XV3SsDTHGhIyx64yxw/XPezDGIuvf6z31E1eVBmNMjzEWzBhLYIzdZox5t4P3eEn9/4k4xtguxpi6sr3PjLFfGGO5jLG4Bm2Nvq+szo/1sccyxtyVJN6v6/9fxDLGwhhjeg1e+6A+3kTG2Ch5x9tUzA1eW8YY44wxo/rnCn+PCWm3iUM7ujV1DYBlnHNHAP0BLKyP830A4ZxzMYDw+ufK5C0Atxs8/xLA95xzOwCPAbymkKia9l8Af3LOHQC4oi52pX2PGWNmABYD8OCcO6NuIvBUKN/7/BuA0U+1NfW++gEQ13/NBbBRTjE29Bv+He9JAM6ccxcAdwB8AAD1P4dTATjV77Oh/veKvP2Gf8cMxpgFgBcApDdoVob3mHRy7TZxAOAJIJlzfpdzXgVgN4AABcf0L5zzbM75tfrHxaj7g2aGuli31W+2DcAEhQTYCMaYOQB/AFvqnzMAwwAE12+ibPHqAhgEYCsAcM6rOOcFUOL3uJ4IgAZjTARAE0A2lOx95pz/BeDRU81Nva8BAH7ndS4D0GOMmcol0HqNxcs5P8E5r6l/ehl194YB6uLdzTmv5JzfA5CMut8rctXEewwA3wNYDqDhDHaFv8eEtOfEwQxARoPnmfVtSosxZg2gD4BIAF0559n1L+UA6KqouBrxA+p+YT1ZgMAQQEGDX77K9l73AJAH4Nf64ZUtjDEtKPF7zDnPAvAN6j5NZgMoBBAN5X6fn2jqfW0PP5OzARyrf6y08TLGAgBkcc5jnnpJaWMmnUd7ThzaFcaYNoAQAG9zzosavsbramKVoi6WMTYWQC7nPFrRsbSCCIA7gI2c8z4ASvHUsIQyvccAUD8vIAB1SU93AFpopLta2Snb+/osjLEPUTd0uFPRsTwLY0wTwAoA/6foWAhpTHtOHNrNrakZYyqoSxp2cs5D65sfPOlirP+eq6j4njIAwHjGWCrqhn+GoW7+gF59lzqgfO91JoBMznlk/fNg1CUSyvoeA8AIAPc453mc82oAoah775X5fX6iqfdVaX8mGWOzAIwF8Ar/381rlDVeW9QllDH1P4fmAK4xxrpBeWMmnUh7Thzaxa2p6+cHbAVwm3P+XYOXDgKYWf94JoAD8o6tMZzzDzjn5pxza9S9p6c5568AOANgUv1mShMvAHDOcwBkMMZ61jcNBxAPJX2P66UD6M8Y06z/P/IkZqV9nxto6n09CGBG/cz//gAKGwxpKAxjbDTqht7Gc87LGrx0EMBUxpgaY6wH6iYcRikixoY45zc55yacc+v6n8NMAO71/8+V8j0mnQznvN1+ARiDulnSKQA+VHQ8TcToi7qu3FgAN+q/xqBu3kA4gCQApwAYKDrWRmIfAuBw/WMb1P1STQawD4CaouN7KlY3AFfr3+f9APSV/T0G8DGABNQtCb8dgJqyvc8AdqFuDkY16v6AvdbU+wqAoa7SKQXATdRVjChDvMmomxfw5Ofvpwbbf1gfbyIAP2V5j596PRWAkbK8x/RFX3TLaUIIIYS0WHseqiCEEEKInFHiQAghhJAWo8SBEEIIIS1GiQMhhBBCWowSB0IIIYS0GCUOhBBCCGkxShwIkSJWt4T6yPrHnzLG1io6JkIIkSZR85sQQlphFYA1jDET1C1oNl7B8RBCiFTRDaAIkTLG2DkA2gCGcM6LGWM2qLtDoS7nfNKz9yaEEOVGQxWESBFjrDcAUwBVnPNiAOCc3+Wcv6bYyAghRDoocSBESupXityJuuWyS+oXVyKEkA6FEgdCpIAxpom6pbGXcc5vA/gEdfMdCCGkQ6E5DoTIGGPMEMBnAEYC2MI5/1zBIRFCSJtR4kAIIYSQFqOhCkIIIYS0GCUOhBBCCGkxShwIIYQQ0mKUOBBCCCGkxShxIIQQQkiLUeJACCGEkBajxIEQQgghLUaJAyGEEEJajBIHQgghhLTY/wNAp5GZIwNtRAAAAABJRU5ErkJggg==\n" }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Import the numpy and pyplot libraries, we set the aliases np and plt so that it is easier to use \n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# We set the mode inline of matplotlib to get the result at the output of the cell code\n", "%matplotlib inline\n", "# Construct lines, in our coordinate system x represents our decision variable x1 and y represents our decision variable x2\n", "\n", "x=np.linspace(0,300,2000) #2000 numbers from 0 to 300\n", "\n", "y1=(125-x)/0.5 # Beskar constraint \n", "y2=x*0 # non negativity constraint\n", "y3=225-x # Tungsten constraint\n", "y4=100+x*0 # Demand constraint\n", "y5=300-3*x # Titanium constraint\n", "\n", "# Solution with objective value\n", "y8=(3166.67-40*x)/5 # we clear the x2 with the value of z\n", "\n", "#1. Plot the lines\n", "plt.plot(x,y1,label=r'$x_{1}+0.5x_{2}\\leq125$')\n", "plt.plot(x,y2,label=r'$x_{2}\\greater0$')\n", "plt.plot(x,y3,label=r'$x_{1}+x_{2}\\leq225$')\n", "plt.plot(x,y4,label=r'$x_{2}\\geq100$')\n", "plt.plot(x,y5,label=r'$3x_{1}+x_{2}\\leq300$')\n", "plt.plot(x,y8,label=r'$z=3166.67$')\n", "\n", "#2. Adjust axis\n", "plt.xlim((0,150))\n", "plt.ylim((0,250))\n", "plt.xlabel(r'$x_{1}$')\n", "plt.ylabel(r'$x_{2}$')\n", "\n", "#3. Fill feasible region\n", "y6=np.minimum(y1,y3) #Line representing the minimum between y6 and y2\n", "y7=np.minimum(y6,y5) #Line representing the minimum between y6 and y5\n", "plt.fill_between(x,y7,y4,where=y7>y4,color='grey',alpha=0.5)\n", "\n", "#4. Plot legend\n", "plt.legend(bbox_to_anchor=(1.05,1),loc=2,borderaxespad=0.)\n" ], "metadata": { "collapsed": false, "pycharm": { "is_executing": false } } } ], "metadata": { "kernelspec": { "name": "python3", "language": "python", "display_name": "Python 3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" }, "pycharm": { "stem_cell": { "cell_type": "raw", "source": [], "metadata": { "collapsed": false } } } }, "nbformat": 4, "nbformat_minor": 0 }